package com.bifrost.service;

import com.bifrost.common.model.ResultModel;
import com.bifrost.entity.Category;
import com.bifrost.entity.MerchantStore;
import com.bifrost.entity.Product;
import com.bifrost.entity.ProductSku;
import org.springframework.data.domain.Page;

import java.util.List;
import java.util.Map;

/**
 * @author rangjf
 * @date 2017/10/31
 */
public interface MallService {

    /**
     * 获取商品类别
     *
     * @param store store
     * @param parentId parentId
     * @return
     */
    public List<Category> getCategories(MerchantStore store, Long parentId);

    List<Map> getCategories(Long storeId, Long parentId);

    /**
     * 按类别获取商品（默认sku）列表
     *
     * @param category 类目Id
     * @param page     当前页数
     * @param pageSize 类目Id
     * @param sortType 排序方式
     * @param minPrice 最低价
     * @param maxPrice 最高价
     * @param querykey 搜索关键字
     * @param brandIds 品牌Id字符串数组
     * @return List
     */
    public Page<ProductSku> getProducts(Category category, Integer page, Integer pageSize, String sortType,
                                        String minPrice, String maxPrice, String querykey, String brandIds);
    /**
     * 获取门店指定类别下的商品（默认sku）列表
     * @param store 门店
     * @param category 类目Id
     * @param page     当前页数
     * @param pageSize 类目Id
     * @param sortType 排序方式
     * @param minPrice 最低价
     * @param maxPrice 最高价
     * @param querykey 搜索关键字
     * @param brandIds 品牌Id字符串数组
     * @return List
     */
    public Page<ProductSku> getProductsByStore(MerchantStore store, Category category, Integer page, Integer pageSize, String sortType,
                                               String minPrice, String maxPrice, String querykey, String brandIds);

    /**
     * 获取商品信息
     *
     * @param skuId skuId
     * @return List
     */
    public Map getProductDetail(Long skuId);

    /**
     * 获取商品详细信息-有赞结构
     * @param skuId
     * @return
     */
    public Map getDetail(Long skuId);

    /**
     * 获取商品图文描述信息
     *
     * @param skuId skuId
     * @return List
     */
    public Map getProductDesc(Long skuId);

    public ResultModel getHotProducts(MerchantStore store, String queryKey, String brandIds, Integer page, Integer pageSize);
}
